package com.phonetools.commonutils.file

import java.io.FileInputStream
import java.io.FileOutputStream

/**
 * 向文件中写入数据
 *
 * @param filePath 目标文件全路径
 * @param data     要写入的数据
 * @return true表示写入成功  false表示写入失败
 */
fun writeBytes(filePath: String, data: ByteArray): Boolean {
    try {
        val fos = FileOutputStream(filePath)
        fos.write(data)
        fos.close()
        return true
    } catch (e: Exception) {
        println(e.message)
    }
    return false
}

/**
 * 从文件中读取数据
 *
 * @param file
 * @return
 */
fun readBytes(file: String): ByteArray? {
    try {
        val fis = FileInputStream(file)
        val len = fis.available()
        val buffer = ByteArray(len)
        fis.read(buffer)
        fis.close()
        return buffer
    } catch (e: Exception) {
        println(e.message)
    }
    return null
}

/**
 * 向文件中写入字符串String类型的内容
 *
 * @param file    文件路径
 * @param content 文件内容
 * @param charset 写入时候所使用的字符集
 */
fun writeString(file: String, content: String, charset: String): Boolean {
    try {
        val data = content.toByteArray(charset(charset))
        return writeBytes(file, data)
    } catch (e: Exception) {
        println(e.message)
    }
    return false
}

/**
 * 从文件路径中读取数据，返回类型是字符串String类型
 *
 * @param charset *读取文件时使用的字符集，如utf-8、GBK等
 * @return
 */
fun readString(file: String, charset: String): String {
    val data = readBytes(file) ?: return ""
    var ret = ""
    try {
        ret = String(data, charset(charset))
    } catch (e: Exception) {
        println(e.message)
    }
    return ret
}

